875. Koko Eating Bananas

题目 875. Koko Eating Bananas

image-f61b3cd7

思路分析

image-606a8c39

代码实现

class Solution {
    private boolean check(int mid,int[] piles,int h){
        int total = 0;
        for(int pile:piles){
            total += Math.ceil(1.0*pile/mid);
        }
        return total<=h;
    }

    public int minEatingSpeed(int[] piles, int h) {
        int maxv=0;
        for(int pile:piles){
            maxv = Math.max(pile, maxv);
        }
        int l=1,r=maxv;
        while(l<r){
            int mid = l+r>>1;
            if(check(mid,piles,h)){
                r=mid;
            }else{
                l=mid+1;
            }
        }
        return r;
    }

}
class Solution {
    private boolean check(int mid,int[] piles,int h){
        int total = 0;
        for(int pile:piles){
            total += (pile + mid - 1) / mid;
        }
        return total<=h;
    }

    public int minEatingSpeed(int[] piles, int h) {
        int maxv=0;
        for(int pile:piles){
            maxv = Math.max(pile, maxv);
        }
        int l=1,r=maxv;
        while(l<r){
            int mid = l+r>>1;
            if(check(mid,piles,h)){
                r=mid;
            }else{
                l=mid+1;
            }
        }
        return r;
    }

}

同类题型

视频讲解